The present disclosure relates to the remote analysis of the performance capability and/or capacity (e.g., processor performance capability and/or memory capacity) of a computing system (e.g., a mobile device) in order to select a version of a software application (or a value for a parameter of the software application) to be utilized on the computing device in a manner that maximizes the benefits of the software application in view of the determined capability or capacity of the computing device.
Mobile devices which connect to the internet using cellular or WiFi data connections are commonly utilized for playing games and running other applications. Often such applications take the form of JavaScript (or other similar languages) executed within a web browser running on the mobile device. Such a method is attractive as it avoids the need to distribute a compiled application for execution at the remote device which would make it harder for users to obtain the application.
Mobile devices are available with a very wide range of capabilities in terms of processor power and memory size. Such capabilities can limit the applications that can be usefully executed on the mobile device. A less powerful device may render complex graphics slowly giving a reduced user experience, or even being so slow as to be unusable. Similarly, limited memory capacity limits the amount of data that can be stored and hence may limit the complexity of software and graphics that can be used in an application.
Designing applications for high-performance devices may thus lead to a poor user-experience on low-performance devices, whereas designing applications for low-performance devices may limit developer's ability to give the best experience to owners of high-performance devices.
Programming languages executed within web-browsers have very limited access to system parameters such as processor power or other capability or available memory or memory capacity (for example, JavaScript cannot access memory capacity). It has therefore not been possible to measure such parameters when running applications within web-browsers. Although it can be possible to utilize identifying information of a device (e.g., model, year or version) to look up the performance capabilities of a device, the number of devices is so great, and the data so inconsistent, that this is not efficient or reliable. Additionally, such a look up based on identifying information would not reveal actual available memory or processing power of a particular device but only provide an expected or ideal processing capability or available memory (e.g., degradation of performance power or memory capacity may occur over time or as a device has more and more applications stored thereon).
Although the issues described above are of particular a concern with respect to mobile devices, similar concerns may also arise in other computer platforms where programs do not have access to system parameters.
Accordingly, Applicant has recognized that there is a need for systems and methods that are operable to detect and/or measure the capability and/or capacity of a computing device and utilize the results of this detecting and/or measuring to optimize the output of a software application to or on the computing device. For example, a particular version of the software application may be selected and/or particular values for respective parameters of the software application (e.g., graphic complexity or sophistication) may be selected such as to optimize the user experience in view of the capability and/or capacity of the computing device.